C语言基础题:d1=~a的意思不就是按位取反么?不就是把0变1,1变0么?为啥又负数补码还原求原码

日期:2016-11-27 04:57:46 人气:2

C语言基础题:d1=~a的意思不就是按位取反么?不就是把0变1,1变0么?为啥又负数补码还原求原码

~a表示将a按位取反,a是一个变量 , 至少要有1个字节(char),而一个字节有8位! 计算机中存储的整数,都是按补码存放的,规定:正数的补码与原码相同,负数的补码为其原码的反码+1。 所以,当a是负数时,计算~a的结果是要求补码的。 如: char a=7 ; (00000111) ~a = 11111000 转换成原码为: 反码:11111000 - 1 = 11110111 原码:10001000= -8
    A+
热门评论