八位码编程
㈠ 按13折线A律压缩编写8位码的问题
+1225为正所以C1=1,+1225>1024在第八段所以段落码为111,间隔为64
段内码=(1225-1024)/64=3(取整数)
3转二进制为11,所以段内码为0011,也可以看表直接得出,这里的3也是段内码的量化间隔
所以8位码为11110011
㈡ 求编程高手帮忙~写一段8位二进制折叠码(PCM编码器)编译码程序
#include <stdio.h>
#include <conio.h>
int trans(int n)
{
int r=0;
if(n<0)
{
r=r|0x80;
n=-n;
}
if(n<=16)
{
r=r|0x00;
}
else if(n<=32)
{
r=r|0x10;
}
else if(n<=64)
{
r=r|0x20;
}
else if(n<=128)
{
r=r|0x30;
}
else if(n<=256)
{
r=r|0x40;
}
else if(n<=512)
{
r=r|0x50;
}
else if(n<=1024)
{
r=r|0x60;
}
else if(n<=2046)
{
r=r|0x70;
}
else
{
return 0;
}
r=r|(n&0x0f);
return r;
}
main()
{
int n,r,i;
printf("输入一个10进制(1-2048):");
scanf("%d",&n);
if(n>=1 && n<=2048)
{
r=trans(n);
printf("8位2进制为:");
for(i=0;i<8;i++)
{
printf("%c",((r>>(8-i-1))&0x01)+'0');
}
printf("\n");
}
else
{
printf("输入错误!\n");
}
}
㈢ 如何用JAVA编写个8位密码生成器(只能是大小写字母和数字)
1.先回答你第一个问题:ch!=null这句语句肯定是错误的,因为ch表示的是一个字符,null表示的是空对象,所以如果写ch!=null,编译的时候肯定是要报错的,你必须写成ch!=' ',前面的为英文引号,引号中间有一个空格。
2.回答你第2个问题,就是怎么使str!=null,你可以在for语句中加一个判断,假如ch== ' ',则这次循环不算,则结果中肯定不会出现null的,见下面的代码。
int j=0,n=0,i=0;
Srting str="";
char ch;
for(j=0;j<=7;j++){
n=Math.random()*122;
i=(int)n;
if((i>=48 && i<=57)||(i>=65 && i<=90) || (i>=97 && i<=122)){
ch=(char)i;
}
//判断来了
else {
j=j-1; //即是这次循环不算,则不可能出现null了
}
}
3.回答你第三个问题:如何输出这24个数呢?见下代码
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 5; j++) {
if (i!=j) {
for (int j2 = 1; j2 < 5; j2++) {
if (j2!=j&&j2!=i) {
System.out.println(""+i+j+j2); //这句话把数字转换为字符串,
//便于输出
}
}
}
}
}
4. 我对你的意思理解为:用一个字符替换指定位的字符,如果是这样的话,replace不能够做到。
replace的方法原型为:
String replace(char oldChar, char newChar) ;
意思为:返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
如果要完成楼主的要求,请看以下代码,我写了一个替换函数:
String tihuan(String string,int index,char ch){
//index表示你要替换的字符位置,第一位为1
char[] chs=string.toCharArray();
chs[index-1]=ch;
String string1=new String(chs);
return string1;
}
//多多指教啊
//希望对你有帮助啊
㈣ 试编写程序:8位数码管动态显示数字AbcdEFgH
这是参考程序,把dofly_DuanMa[]里面的值改成a、b、c、d、e、f、g、h的对应段码值就行,然后位选信号看下你的连接电路是怎么接的。希望采纳,有疑问请追问。
#include<reg52.h>
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 sbit LATCH1=P2^2;//定义锁存使能端口 段锁存
sbit LATCH2=P2^3;// 位锁存
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
void Delay(unsigned int t); //函数声明
/*------------主函数-----------------*/
main() {
unsigned char i=0;
while(1)
{ DataPort=dofly_WeiMa[i]; //取位码
LATCH2=1; //位锁存
LATCH2=0;
DataPort=dofly_DuanMa[i]; //取显示数据,段码
LATCH1=1; //段锁存
LATCH1=0;
Delay(600); // 扫描间隙延时,时间太长会闪烁,太短会造成重影,
i++;
if(8==i) //检测8位扫描完全结束?如扫描完成则从第一个
i=0; }
}
/*------------------- 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 0~65535 ----------------*/
void Delay(unsigned int t)
{ while(--t); }
㈤ 请问8位与32位的单片机在编程上有什么不同,需要注意些什么!
用C语言编程的话,没什么不同
不管是8位的32位的,硬件结构不同,功能也会相差很大,主要区别就 体现在特殊功能寄存器上,用 C语言操作单片机,可以不进行内存管理,但离不开对特殊功能寄存器的操作
即使都是8位单 片机,特殊功能寄存器也相差很大
至于通用的数学运算,利用C语言的库函数,编程时认为与硬件无关
当然8位机上运行肯定慢一些
唯一的差别是你可以将8位二进制数装入32位寄存器,而不可将32位二进制数装入16位或8位寄存器
㈥ 求大神编程…口令编码:从键盘输入8位字符,对其进行编码,编码规律:将顺序输入的字符同生日(如198
void main(void)
{
unsigned char array[8], cnt;
unsigned char bir[8] = {'1','9','8','2','0','9','2','8'};
printf("Input the array \n");
for(cnt=0; cnt<8; cnt++)
scanf("%c", &array[cnt]);
printf("Output the result \n");
for(cnt=0; cnt<8; cnt++){
array[cnt] ^= bir[cnt];
printf("%d ", array[cnt]);
}
printf("\n");
}
㈦ verilog 语言8位bcd码转二进制码的程序怎么编写
mole BCDtob(ge,shi,,qian,wan,bianry_reg,clk,rst); //十进制转二进制
input [3:0]ge,shi,,qian,wan;
input clk,rst;
output [16:0]bianry_reg;
wire [16:0]bianry;
reg [16:0]bianry_reg;
reg [16:0]wan1,wan2,wan3,wan4,wan5;
reg [16:0]qian1,qian2,qian3,qian4,qian5,qian6;
reg [16:0]1,2,3;
reg [16:0]shi1,shi2,ge1;
always @ (*)
begin
wan5 <= wan<<13;
wan4 <= wan<<10;
wan3 <= wan<<9;
wan2 <= wan<<8;
wan1 <= wan<<4;
qian6 <= qian<<9;
qian5 <= qian<<8;
qian4 <= qian<<7;
qian3 <= qian<<6;
qian2 <= qian<<5;
qian1 <= qian<<3;
3 <= <<6;
2 <= <<5;
1 <= <<2;
shi2 <= shi<<3;
shi1 <= shi<<1;
ge1 <= ge;
end
assign bianry = wan5+wan4+wan3+wan2+wan1+qian6+qian5+qian4+qian3+qian2+qian1+3+2+1+shi2+shi1+ge1;
always @ (posedge clk or negedge rst)
if (~rst)
bianry_reg <= 0;
else
bianry_reg <= bianry;
endmole
㈧ 软件编程中的8位纯数字颜色代码如何转换
把这个数值除以65536后取整,就是R
把这个数值除以256后取整,再与256求模(即取余数),就是G
把这个数与256求模(即取余数),就是B
比如
12000284/65536 = 183(R)
12000284/256%256 = 28(G)
12000284%256 = 28(B)
也可以把这个数值转换为16进制,然后开头两位就是R,中间两位是G,最后两位是B
比如
12000284 = 0xB71C1C
0xB7 = 183(R)
0x1C = 28(G)
0x1C = 28(B)