《深入理解計算機系統》 練習題2.31答案
練習題2.31
你的同事對你補碼加法溢位條件的分析有些不耐煩了,他給出了一個函式tadd_ok的實現,如下
//determin whether arguments can be added without overflow
//WARNING: THIS code is buggy
int tadd_ok(int x, int y) {
int sum = x+y;
return (sum-x == y)&& (sum-y == x); }
你看了程式碼以後笑了,為什麼?
答案:
轉載自:http://bbs.csdn.net/topics/370130622
相關推薦
深入理解計算機系統 練習題2.31 答案與分析
測試程式碼 #include <stdio.h> #include "stdafx.h" #include <iostream> using namespace std; int uadd_ok(int x, int y) {
深入理解計算機系統 練習題2.25 答案與分析
#include <stdio.h> #include "stdafx.h" #include <iostream> using namespace std; float sum_elements(float a[], unsi
深入理解計算機系統 練習題2.32 答案與分析
錯誤示例 #include <stdio.h> #include "stdafx.h" #include <iostream> using namespace std; int tadd_ok(int x, int y) {
深入理解計算機系統 練習題2.11 答案與分析
可執行程式碼 #include <stdio.h> #include "stdafx.h" #include <iostream> using namespace std; void inplace_swap(int *x,
深入理解計算機系統 練習題2.5 答案與分析
測試程式碼 #include <stdio.h> #include "stdafx.h" #include <iostream> typedef unsigned char *byte_pointer; void show_b
深入理解計算機系統 練習題2.25-隱式強制類型轉換導致的數組越界
print 代碼 nbsp end process 簡單 turned 轉換成 隱式 1 #include <stdio.h> 2 #include <iostream> 3 using namespace std; 4 5 flo
深入理解計算機系統-作業2.10
oid 位置 pla borde 作業2 nbsp body 開始 width 1 void inplace_swap(int *x, int *y){ 2 *y = *x ^ *y;/*step1*/ 3 *x = *x ^ *y;/*step2*/ 4
深入理解計算機系統(2.4)------整數的表示(無符號編碼和補碼編碼)
class 映射 們的 c語言 正數 裏的 小例子 負數 類型 上一篇博客我們主要介紹了布爾代數和C語言當中的幾個運算符。那麽這一篇博客我們主要介紹在計算機中整數是如何表示的,諸如我們在編碼過程中遇到的對數據類型進行強制轉換可能會得到意想不到的結果在這篇博客裏你會得到解
深入理解計算機系統(2.8)---浮點數的舍入,Java中的舍入例子以及浮點數運算(重要)
https://www.cnblogs.com/zuoxiaolong/p/computer12.html 前言 上一章我們簡單介紹了IEEE浮點標準,本次我們主要講解一下浮點運算舍入的問題,以及簡單的介紹浮點數的運算。 之前我們已經提到過,有很多小數是二進位制
深入理解計算機系統homework2 2.85 2.93 2.95
2.85 最小的正非規格化數 值:2^(-63) * (2^(2-2^15)) = 2^(-16445) 十進位制值: 最小的正規格化數 值:1*2^(2-2^15) = 2^(-16382) 十進位制值: 最大的規格化數: 值:(2-2^(-6
《深入理解計算機系統》 練習題2.31答案
練習題2.31 你的同事對你補碼加法溢位條件的分析有些不耐煩了,他給出了一個函式tadd_ok的實現,如下 //determin whether arguments can be added without overflow //WARNING: THIS code is
《深入理解計算機系統》 練習題2.36答案
強制型別轉換與其他運算的先後 int main(void) { int x = -pow(2, sizeof(int) * 8 - 1); /* Tmin */ int y = -1; auto
深入理解計算機系統》 練習題2.37答案
XDR庫中的安全漏洞 1)size_t是unsigned int型的。 2)malloc的函式原型是void *malloc(unsigned int size)。 如果第9行程式碼裡,ele_cnt
《深入理解計算機系統》 練習題2.32答案
編寫函式tsub_ok的程式碼,引數是x和y,執行的運算是x-y,如果計算x-y不產生溢位,函式就返回1.假設你寫的程式碼如下: int tsub_ok(int x, int y) { return tadd_ok(x,-y); } tadd_ok函式
《深入理解計算機系統》 練習題2.42-2.44
補碼除以2的冪 具體講解在書裡。這裡直接給幾個結論: 1)有符號數即補碼數執行的是,算術右移。 2)有變數x和 2 k
深入理解計算機系統(原書第三版)練習題2.6 感性認識整型和浮點型別(同一個數)在機器中表示
/** * 練習題2.6 感性認識整型和浮點型別(同一個數)在機器中表示 * 由於我的機器是小端表示,將列印結果還原真實數並用二進位制表示 * 41913500 -->(還原) 0x00359141 -->(二進位制) 0000 0000 0011 0101
《深入理解計算機系統》 練習題3.2-3.3
彙編命令總結 1)%eax,%dx就是暫存器的名字 2)(%rax)。只要是有括號的了,那就是記憶體引用。注意x86-64中的記憶體引用總是用四字長暫存器給出的,即暫存器名字開頭都是r開頭的。(%rax
深入理解計算機系統(1.2)------存儲設備
高速 計算 想法 知識 1-1 運用 文件 字符 設備 上一章我們講解了hello world 程序在計算機系統中是如何運行的。 hello 程序的機器指令最初是存放在磁盤上的,當程序加載時,他們被復制到主存;當處理器運行程序的時候,指令又從主存復制到處理器。相似的,數
3.2《深入理解計算機系統》筆記(二)內存和高速緩存的原理【插圖】
img sram 本質 text ddr rate too 是我 很大的 《深入計算機系統》筆記(一)主要是講解程序的構成、執行和控制。接下來就是運行了。我跳過了“處理器體系結構”和“優化程序性能”,這兩章的筆記繼續往後延遲! 《深入計算機系統》的一個很大的用處
深入理解計算機系統 2.4.2 IEEE浮點表示詳細講解
定義 IEEE浮點標準用以下公式表示\(V = (-1)^s * M * 2^E\) 符號(sign):s決定這書是負數(s = 1)還是正數(s = 0),而對於數值0的符號位解釋作為特殊情況處理 。 尾數(significand):M是一個二進位制小數,它的範圍是\